package com.ztf.task;

import java.util.HashMap;
import java.util.Map;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.junit.Test;

/**
 * 通过设置流程变量赋值任务的执行人的应用场合
 *     在进入该节点之前，必须给该任务的执行人赋值:解释：该任务还没有进行，就得给该任务的执行人赋值了
 * @author zd
 *
 */
public class TaskTest {
    @Test
    public void testDeploy(){
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        processEngine.getRepositoryService()
                .createDeployment()
                .addClasspathResource("com/itheima09/activiti5/task/task.bpmn")
                .deploy();
    }

    @Test
    public void testStartPi(){
        Map<String, Object> variables = new HashMap<String, Object>();
        /**
         * 通过流程变量的形式给
         *     <userTask id="请假申请" name="请假申请" activiti:assignee="#{applicator}"></userTask>
         *     中的applicator赋值
         *    必须在进入该userTask节点之前给applicator赋值
         */
        variables.put("applicator", "张三");
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        processEngine.getRuntimeService()
                .startProcessInstanceById("task:1:704",variables);
    }

    /**
     * 在完成任务的时候，给下一个节点的流程变量的名称赋值
     */
    @Test
    public void testFinishTask(){
        Map<String, Object> variables = new HashMap<String, Object>();
        variables.put("boss", "王五");
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        processEngine.getTaskService()
                .complete("1103",variables);
    }
}
